home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib09.dsk / APPLE DARTS.bas < prev    next >
BASIC Source File  |  2023-02-26  |  7KB  |  97 lines

  1. 1  REM  **********************
  2. 2  REM  *   APPPLE DARTS     *
  3. 3  REM  *  BY ROBERT DEVINE  *
  4. 4  REM  * COPYRIGHT (C) 1982 *
  5. 5  REM  * BY MICRO-SPARC INC *
  6. 6  REM  * LINCOLN, MA. 01773 *
  7. 7  REM  **********************
  8. 10 X = 0:F = 0:PL = 0:D = 0:Y = 0:INC = 0: DIM OX(20),OY(20),IX(20),IY(20),C(20): GOTO 15000
  9. 100  HCOLOR= 0: IF X/2 =  INT(X/2)  THEN  HCOLOR= 3
  10. 102  FOR I = 1 TO SP: NEXT I
  11. 105  RETURN 
  12. 110  HCOLOR= 3: IF X/2 =  INT(X/2)  THEN  HCOLOR= 0
  13. 112  FOR I = 1 TO SP: NEXT I
  14. 115  RETURN 
  15. 200  HPLOT 140 +X,79 +Y TO 140,79 TO 140 -X,79 -Y: RETURN 
  16. 210  HPLOT 140 +X,79 -Y TO 140,79 TO 140 -X,79 +Y: RETURN 
  17. 220  HPLOT 140 +X,79 +Y: HPLOT 140 -X,79 -Y: RETURN 
  18. 230  HPLOT 140 +X,79 -Y: HPLOT 140 -X,79 +Y: RETURN 
  19. 240 F = 3: ON (D = 1) GOTO 245: ON  INT( RND(1) *2) GOTO 245: FOR X = 20 TO 1  STEP  -1: GOTO 250
  20. 245  FOR X = 1 TO 20
  21. 250  GOSUB 100: DRAW 11 AT OX(X),OY(X): GOSUB 110: DRAW 11 AT OX(X),OY(X): GOSUB 300: NEXT 
  22. 260 F = 2: ON (D = 1) GOTO 265: ON  INT( RND(1) *2) GOTO 265: FOR X = 20 TO 1  STEP  -1: GOTO 270
  23. 265  FOR X = 1 TO 20
  24. 270  GOSUB 110: DRAW 11 AT IX(X),IY(X): GOSUB 100: DRAW 11 AT IX(X),IY(X): GOSUB 300: NEXT :X = 0
  25. 280 F = 1: HCOLOR= 0: DRAW 11 AT 140,79: FOR I = 1 TO SP: NEXT I: HCOLOR= 3: DRAW 11 AT 140,79: GOSUB 300: GOTO 240
  26. 300  IF  PEEK( -16287 +PL -1) >127  THEN  HCOLOR= 5: ON F GOSUB 310,315,320:T = T +1: ON G GOSUB 350,400
  27. 305  RETURN 
  28. 310  DRAW 12 AT 140,79: RETURN 
  29. 315  DRAW 12 AT IX(X),IY(X): RETURN 
  30. 320  DRAW 12 AT OX(X),OY(X): RETURN 
  31. 350  REM  GAME 1 (SCORE 1-20)
  32. 355  IF C(X) = PS(PL) +1  THEN PS(PL) = C(X)
  33. 360  IF PS(PL) = 20  AND F = 1  THEN  HCOLOR= 3: GOSUB 310: GOTO 600
  34. 370  GOTO 610
  35. 400  REM  GAME 2 (SCORE 500)
  36. 405  IF F = 3  AND (X/2 =  INT(X/2))  THEN PS(PL) = PS(PL) -C(X): GOTO 610
  37. 410  IF F = 2  AND (X/2 < > INT(X/2))  THEN PS(PL) = PS(PL) -C(X): GOTO 610
  38. 415  IF F = 1  THEN PS(PL) = PS(PL) +50: GOTO 430
  39. 420 PS(PL) = PS(PL) +C(X)
  40. 430  IF PS(PL) > = 500  THEN  GOSUB 620: GOTO 600
  41. 440  GOTO 610
  42. 600  HOME : VTAB 22: HTAB 10: FLASH : PRINT " PLAYER "PL" WINS !!! ": NORMAL : POP : POP : FOR X = 1 TO 1000: NEXT X: HOME : VTAB 21: PRINT "WANT ANOTHER GAME ?";: GET A$: PRINT : IF A$ = "Y"  THEN 16000
  43. 605  TEXT : HOME : PRINT  CHR$(4)"CATALOG": END 
  44. 610  FOR Y = 1 TO 100: NEXT Y: ON (G = 2) GOTO 612: ON (T <3) GOTO 615:T = 0
  45. 612 PL = PL +1: IF PL = 3  THEN PL = 1
  46. 615  VTAB 21: PRINT "PLAYER 1 SCORE="PS(1)"  PLAYER 2 SCORE="PS(2)"    ": VTAB 23: FOR Y = 1 TO PL: POKE 768,100 *PL: POKE 769,50: CALL 770: NEXT Y: PRINT  TAB( 4)"PLAYER "PL"'S TURN --- THROW DART "T +1
  47. 620  ON (F -1) GOSUB 100,110: ON (F -1) GOTO 315,320: HCOLOR= 3: GOTO 310
  48. 1000 INC = 1:X = 0
  49. 1005  IF X >58  THEN INC = .50
  50. 1010  IF X >71  THEN INC = .10
  51. 1015  IF X >78.11  THEN INC = .03
  52. 1020 X = X +INC: IF X >79  THEN 1040
  53. 1025 Y =  SQR(6241 -X ^2)
  54. 1030  IF X < = 24  OR (X > = 46  AND X < = 63.2)  OR X > = 75  THEN  GOSUB 200: GOSUB 230: GOTO 1005
  55. 1035  IF (X >24  AND X <46)  OR (X > = 63.2  AND X <75)  THEN  GOSUB 210: GOSUB 220: GOTO 1005
  56. 1040 INC = 1:X = 0
  57. 1045  IF X >33  THEN INC = .50
  58. 1050  IF X >40.5  THEN INC = .10
  59. 1055  IF X >44.5  THEN INC = .03
  60. 1060 X = X +INC: IF X >45  THEN 1080
  61. 1065 Y =  SQR(2025 -X ^2)
  62. 1070  IF X < = 13.5  OR (X > = 26  AND X < = 36)  OR X >42.75  THEN  HCOLOR= 3: GOSUB 210: HCOLOR= 0: GOSUB 200: GOTO 1045
  63. 1075  IF (X >13.5  AND X <26)  OR (X >36  AND X <42.75)  THEN  HCOLOR= 3: GOSUB 200: HCOLOR= 0: GOSUB 210: GOTO 1045
  64. 1080 INC = 1:X = 0
  65. 1085  HCOLOR= 0: IF X >11  THEN INC = .03
  66. 1090 X = X +INC: IF X >15  THEN 1095
  67. 1092 Y =  SQR(225 -X ^2): GOSUB 200: GOSUB 210: HCOLOR= 3: GOSUB 220: GOSUB 230: GOTO 1085
  68. 1095  HCOLOR= 3: FOR X = 0 TO 6  STEP .10
  69. 1100 Y =  SQR(36 -X ^2): GOSUB 200: GOSUB 210: NEXT X: GOTO 1145
  70. 1145  FOR A = 1 TO 20: READ XC,YC,C: GOSUB 1200: GOSUB 1210: NEXT A: GOTO 1230
  71. 1200  HCOLOR= C: SCALE= 1: FOR X = 0 TO 48  STEP 16: ROT= X: DRAW 13 AT XC,YC: NEXT X: RETURN 
  72. 1210  IF C = 0  THEN C = 3: GOTO 1220
  73. 1215 C = 0
  74. 1220  HCOLOR= C: SCALE= 1: ROT= 0:N$ =  STR$(A): IF  LEN(N$) = 1  THEN  DRAW  VAL(N$) +1 AT XC,YC: RETURN 
  75. 1225  DRAW  VAL( LEFT$(N$,1)) +1 AT XC -4,YC: DRAW  VAL( RIGHT$(N$,1)) +1 AT XC +3,YC: RETURN 
  76. 1230  FOR X = 1 TO 20: READ OX(X),OY(X): NEXT X: FOR X = 1 TO 20: READ IX(X),IY(X): NEXT X: FOR X = 1 TO 20: READ C(X): NEXT X: FOR X = 770 TO 790: READ Y: POKE X,Y: NEXT X
  77. 1235  VTAB 21: PRINT "PLAYER 1 SCORE="PS(1)"  PLAYER 2 SCORE="PS(2)"    ": VTAB 23: FOR Y = 1 TO PL: POKE 768,100 *PL: POKE 769,50: CALL 770: NEXT Y: PRINT  TAB( 4)"PLAYER "PL"'S TURN --- THROW DART "T +1
  78. 1240  GOTO 240
  79. 10000  PRINT  CHR$(4)"BLOAD DB SHAPES A$9400/L185": HIMEM: 37888: POKE 232,0: POKE 233,148: RETURN 
  80. 10039  REM  NUMBER COORDINATES AND CIRCLE COLORS XC,YC,C
  81. 10040  DATA  171,18,0,171,141,3,129,147,3,201,48,0,129,11,0,207,90,0,92,128,3,72,88,3,93,30,0,201,110,3,72,67,0,110,18,3,207,69,3,79,47,3,188,129,0,79,110,0,151,147,0,188,30,3,110,141,0,151,11,3
  82. 10049  REM  OUTER TRACK COORDINATES OX(X),OY(X)
  83. 10050  DATA  130,26,117,31,104,41,93,54,88,70,89,86,94,102,103,116,116,127,131,132,150,132,165,127,178,116,185,102,190,87,191,70,186,55,177,41,164,31,149,26
  84. 10054  REM  INNER TRACK COORDINATES IX(X),IY(X)
  85. 10055  DATA  135,40,124,43,113,50,106,61,103,73,104,85,107,96,114,107,123,114,136,117,147,117,156,114,167,107,174,97,177,85,176,72,173,60,166,50,157,43,146,40
  86. 10059  REM  COUNTERCLOCKWISE BOARD ORDER C(X)
  87. 10060  DATA  5,12,9,14,11,8,16,7,19,3,17,2,15,10,6,13,4,18,1,20
  88. 10069  REM  SOUND DATA
  89. 10070  DATA  173,48,192,136,208,5,206,1,3,240,9,202,208,245,174,0,3,76,2,3,96
  90. 15000  HOME : VTAB 8: PRINT  TAB( 17)"DARTS": PRINT : PRINT  TAB( 13)"COPYRIGHT 1981": PRINT : PRINT  TAB( 12)"ROBERT R. DEVINE": PRINT : PRINT  TAB( 13)"ADONA ARKANSAS": PRINT : PRINT 
  91. 15010  PRINT  TAB( 10)"WANT INSTRUCTIONS ?";: GET A$: PRINT : PRINT : PRINT : IF A$ = "N"  THEN 16000
  92. 15020  HOME : VTAB 6: PRINT "TO PLAY DARTS EACH PLAYER USES A GAME": PRINT : PRINT "PADDLE, PLAYER 1 USES PDL(0) AND PLAYER": PRINT : PRINT "2 USES PDL(1).  SIMPLY PRESS YOUR GAME": PRINT : PRINT "BUTTON WHEN THE FLASHING SQUARE IS ON": PRINT : PRINT "THE SPOT YOU WANT."
  93. 15030  PRINT : PRINT "HIT ANY KEY TO CONTINUE>";: GET A$: HOME : INVERSE : PRINT " GAME 1 ": NORMAL : PRINT : PRINT "TO WIN YOU MUST HIT EACH NUMBER (1-20)": PRINT : PRINT "IN ORDER, AND THEN YOU MUST HIT THE": PRINT : PRINT "BULLS EYE.": PRINT 
  94. 15040  INVERSE : PRINT " GAME 2 ": NORMAL : PRINT : PRINT "THE FIRST PLAYER TO GET 500": PRINT : PRINT "POINTS WINS.  EACH HIT IS WORTH THE": PRINT : PRINT "SECTION VALUE.  A BULLS EYE IS WORTH 50": PRINT : PRINT "POINTS.  TO MAKE THINGS INTERESTING,": PRINT 
  95. 15050  PRINT "ANY BLACK SQUARE YOU HIT WILL": PRINT : PRINT "BE DEDUCTED FROM YOUR SCORE.": PRINT : PRINT 
  96. 16000  INPUT "WHICH GAME (1 OR 2) ";G: ON (G <1  OR G >2) GOTO 16000: PRINT : INPUT "DIFFICULTY (1=EASY, 2=HARD) ";D: INPUT "ENTER SPEED OF PLAY (1=FAST, 255=SLOW) ";SP: HOME : IF F >0  THEN PL = 1:PS(1) = 0:PS(2) = 0:T = 0:GOT
  97. 16010  GOSUB 10000: HOME : HGR : HCOLOR= 3:PL = 1: GOTO 1000